      double precision function mapXemC(x,cmin,cmax)	

      implicit none
      double precision :: x,cmin,cmax

	  !mapeamento de constrained minimization em unconstrained abubakar 2004 (2a funcao do apendice)

	  if( abs(x) .le. 100.)then ! limites para X: evitar que o expoente gde gere +- Infinity  X entre -10 e +10 ja aproxima a assintota
		mapXemC = (Cmax * dexp(x) + Cmin * dexp(-x))/ (dexp(x) + dexp(-x)) 
	  elseif( x .lt. 100.)then
		mapXemC = Cmin
	  elseif( x .gt. 100.)then  
		mapXemC = Cmax
	  endif


! 	  ! mapeamento de constrained minimization em unconstrained hu 2009 (eq 47 da pag R7)
! 	  ! evita aquele patamar depois de X=3 ou X=-3 onde dc/dX = 0, zerando o gradiente
! 
! 	 mapXemC = 0.5*(Cmax+Cmin) + 0.5*(Cmax-Cmin)*sin(x)	  

      return
      end function